home *** CD-ROM | disk | FTP | other *** search
/ Macintosh Technology Seed 1996 September / Macintosh Technology Seed (September 1996) (CDRM1437020).ISO / pc / qd3d15d6 / 15d6_sdk.exe / QD3D Win32 1.5d6 / Interfaces / QD3DGeometry.h < prev    next >
C/C++ Source or Header  |  1996-08-21  |  64KB  |  2,191 lines

  1. /******************************************************************************
  2.  **                                                                             **
  3.  **     Module:        QD3DGeometry.h                                             **
  4.  **                                                                          **
  5.  **                                                                          **
  6.  **     Purpose:     Geometric primitives - data structures and routines         **
  7.  **                                                                          **
  8.  **                                                                          **
  9.  **                                                                          **
  10.  **     Copyright (C) 1991-1996 Apple Computer, Inc. All rights reserved.     **    
  11.  **                                                                             **
  12.  **                                                                          **
  13.  *****************************************************************************/
  14. #ifndef QD3DGeometry_h
  15. #define QD3DGeometry_h
  16.  
  17. #if defined(PRAGMA_ONCE) && PRAGMA_ONCE
  18.     #pragma once
  19. #endif  /*  PRAGMA_ONCE  */
  20.  
  21. #include "QD3DSet.h"
  22.  
  23. #if defined(THINK_C) || defined(__SC__)
  24.     #pragma options(!pack_enums, !align_arrays)
  25.     #pragma SC options align=power
  26. #elif defined(__MWERKS__)
  27.     #pragma enumsalwaysint on
  28.     #pragma align_array_members off
  29.     #pragma options align=native
  30. #elif defined(__PPCC__)
  31.     #pragma options align=power
  32. #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  33.     #pragma options enum=int
  34. #endif
  35.  
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif    /* __cplusplus */
  39.  
  40. /******************************************************************************
  41.  **                                                                             **
  42.  **                                Geometry Routines                             **
  43.  **                                                                             **
  44.  *****************************************************************************/
  45.  
  46. QD3D_EXPORT TQ3ObjectType Q3Geometry_GetType(
  47.     TQ3GeometryObject    geometry);
  48.  
  49. QD3D_EXPORT TQ3Status Q3Geometry_GetAttributeSet(
  50.     TQ3GeometryObject    geometry,
  51.     TQ3AttributeSet        *attributeSet);
  52.  
  53. QD3D_EXPORT TQ3Status Q3Geometry_SetAttributeSet(
  54.     TQ3GeometryObject    geometry,
  55.     TQ3AttributeSet        attributeSet);
  56.  
  57. QD3D_EXPORT TQ3Status Q3Geometry_Submit(
  58.     TQ3GeometryObject    geometry, 
  59.     TQ3ViewObject        view);
  60.  
  61.  
  62. /******************************************************************************
  63.  **                                                                             **
  64.  **                            Box    Data Structure Definitions                     **
  65.  **                                                                             **
  66.  *****************************************************************************/
  67.  
  68. typedef struct TQ3BoxData {
  69.     TQ3Point3D            origin;
  70.     TQ3Vector3D            orientation;
  71.     TQ3Vector3D            majorAxis;
  72.     TQ3Vector3D            minorAxis;
  73.     TQ3AttributeSet        *faceAttributeSet;    /* Ordering : Left, right,     */
  74.                                             /*              front, back,     */
  75.                                             /*              top, bottom    */
  76.     TQ3AttributeSet        boxAttributeSet;
  77. } TQ3BoxData;
  78.  
  79.  
  80. /******************************************************************************
  81.  **                                                                             **
  82.  **                                Box Routines                                 **
  83.  **                                                                             **
  84.  *****************************************************************************/
  85.  
  86. QD3D_EXPORT TQ3GeometryObject Q3Box_New(
  87.     const TQ3BoxData    *boxData);
  88.  
  89. QD3D_EXPORT TQ3Status Q3Box_Submit(
  90.     const TQ3BoxData    *boxData,
  91.     TQ3ViewObject        view);
  92.     
  93. QD3D_EXPORT TQ3Status Q3Box_SetData(
  94.     TQ3GeometryObject    box, 
  95.     const TQ3BoxData    *boxData);
  96.  
  97. QD3D_EXPORT TQ3Status Q3Box_GetData(
  98.     TQ3GeometryObject    box,
  99.     TQ3BoxData            *boxData);
  100.  
  101. QD3D_EXPORT TQ3Status Q3Box_EmptyData(
  102.     TQ3BoxData            *boxData);
  103.     
  104. QD3D_EXPORT TQ3Status Q3Box_SetOrigin(
  105.     TQ3GeometryObject    box,
  106.     const TQ3Point3D    *origin);
  107.  
  108. QD3D_EXPORT TQ3Status Q3Box_SetOrientation(
  109.     TQ3GeometryObject    box,
  110.     const TQ3Vector3D    *orientation);
  111.  
  112. QD3D_EXPORT TQ3Status Q3Box_SetMajorAxis(
  113.     TQ3GeometryObject    box,
  114.     const TQ3Vector3D    *majorAxis);
  115.  
  116. QD3D_EXPORT TQ3Status Q3Box_SetMinorAxis(
  117.     TQ3GeometryObject    box,
  118.     const TQ3Vector3D    *minorAxis);
  119.  
  120. QD3D_EXPORT TQ3Status Q3Box_GetOrigin(
  121.     TQ3GeometryObject    box,
  122.     TQ3Point3D            *origin);
  123.  
  124. QD3D_EXPORT TQ3Status Q3Box_GetOrientation(
  125.     TQ3GeometryObject    box,
  126.     TQ3Vector3D            *orientation);
  127.  
  128. QD3D_EXPORT TQ3Status Q3Box_GetMajorAxis(
  129.     TQ3GeometryObject    box,
  130.     TQ3Vector3D            *majorAxis);
  131.  
  132. QD3D_EXPORT TQ3Status Q3Box_GetMinorAxis(
  133.     TQ3GeometryObject    box,
  134.     TQ3Vector3D            *minorAxis);
  135.  
  136. QD3D_EXPORT TQ3Status Q3Box_GetFaceAttributeSet(
  137.     TQ3GeometryObject    box,
  138.     unsigned long        faceIndex,
  139.     TQ3AttributeSet        *faceAttributeSet);
  140.  
  141. QD3D_EXPORT TQ3Status Q3Box_SetFaceAttributeSet(
  142.     TQ3GeometryObject    box,
  143.     unsigned long        faceIndex,
  144.     TQ3AttributeSet        faceAttributeSet);
  145.  
  146.  
  147. /******************************************************************************
  148.  **                                                                             **
  149.  **                        Cone Data Structure Definitions                          **
  150.  **                                                                             **
  151.  *****************************************************************************/
  152.  
  153. typedef struct TQ3ConeData {
  154.     TQ3Point3D            origin;
  155.     TQ3Vector3D            orientation;
  156.     TQ3Vector3D            majorRadius;
  157.     TQ3Vector3D            minorRadius;
  158.     float                uMin, uMax,
  159.                         vMin, vMax;
  160.     TQ3EndCap            caps;
  161.     TQ3AttributeSet        interiorAttributeSet;
  162.     TQ3AttributeSet        faceAttributeSet;
  163.     TQ3AttributeSet        bottomAttributeSet;
  164.     TQ3AttributeSet        coneAttributeSet;
  165. } TQ3ConeData;
  166.  
  167.  
  168. /******************************************************************************
  169.  **                                                                             **
  170.  **                                Cone Routines                                 **
  171.  **                                                                             **
  172.  *****************************************************************************/
  173.  
  174. QD3D_EXPORT TQ3GeometryObject Q3Cone_New(
  175.     const TQ3ConeData        *coneData);
  176.  
  177. QD3D_EXPORT TQ3Status Q3Cone_Submit(
  178.     const TQ3ConeData        *coneData, 
  179.     TQ3ViewObject            view);
  180.  
  181. QD3D_EXPORT TQ3Status Q3Cone_SetData(
  182.     TQ3GeometryObject        cone, 
  183.     const TQ3ConeData        *coneData);
  184.  
  185. QD3D_EXPORT TQ3Status Q3Cone_GetData(
  186.     TQ3GeometryObject        cone,
  187.     TQ3ConeData                *coneData);
  188.  
  189. QD3D_EXPORT TQ3Status Q3Cone_SetOrigin(
  190.     TQ3GeometryObject        cone,
  191.     const TQ3Point3D        *origin);
  192.  
  193. QD3D_EXPORT TQ3Status Q3Cone_SetOrientation(
  194.     TQ3GeometryObject        cone,
  195.     const TQ3Vector3D        *orientation);
  196.  
  197. QD3D_EXPORT TQ3Status Q3Cone_SetMajorRadius(
  198.     TQ3GeometryObject        cone,
  199.     const TQ3Vector3D        *majorRadius);
  200.  
  201. QD3D_EXPORT TQ3Status Q3Cone_SetMinorRadius(
  202.     TQ3GeometryObject        cone,
  203.     const TQ3Vector3D        *minorRadius);
  204.  
  205. QD3D_EXPORT TQ3Status Q3Cone_GetOrigin(
  206.     TQ3GeometryObject        cone,
  207.     TQ3Point3D                *origin);
  208.  
  209. QD3D_EXPORT TQ3Status Q3Cone_GetOrientation(
  210.     TQ3GeometryObject        cone,
  211.     TQ3Vector3D                *orientation);
  212.  
  213. QD3D_EXPORT TQ3Status Q3Cone_GetMajorRadius(
  214.     TQ3GeometryObject        cone,
  215.     TQ3Vector3D                *majorRadius);
  216.  
  217. QD3D_EXPORT TQ3Status Q3Cone_GetMinorRadius(
  218.     TQ3GeometryObject        cone,
  219.     TQ3Vector3D                *minorRadius);
  220.     
  221. QD3D_EXPORT TQ3Status Q3Cone_SetParameterLimits(
  222.     TQ3GeometryObject        cone,
  223.     const float                uMin,
  224.     const float                uMax,
  225.     const float                vMin,
  226.     const float                vMax);
  227.                             
  228. QD3D_EXPORT TQ3Status Q3Cone_GetParameterLimits(
  229.     TQ3GeometryObject        cone,
  230.     float                    *uMin,
  231.     float                    *uMax,
  232.     float                    *vMin,
  233.     float                    *vMax);
  234.  
  235. QD3D_EXPORT TQ3Status Q3Cone_SetCaps(
  236.     TQ3GeometryObject        cone,
  237.     TQ3EndCap                caps);
  238.  
  239. QD3D_EXPORT TQ3Status Q3Cone_GetCaps(
  240.     TQ3GeometryObject        cone,
  241.     TQ3EndCap                *caps);
  242.  
  243. QD3D_EXPORT TQ3Status Q3Cone_SetInteriorAttributeSet(
  244.     TQ3GeometryObject        cone,
  245.     TQ3AttributeSet            interiorAttributeSet);
  246.  
  247. QD3D_EXPORT TQ3Status Q3Cone_GetInteriorAttributeSet(
  248.     TQ3GeometryObject        cone,
  249.     TQ3AttributeSet            *interiorAttributeSet);
  250.  
  251. QD3D_EXPORT TQ3Status Q3Cone_SetBottomAttributeSet(
  252.     TQ3GeometryObject        cone,
  253.     TQ3AttributeSet            bottomAttributeSet);
  254.  
  255. QD3D_EXPORT TQ3Status Q3Cone_GetBottomAttributeSet(
  256.     TQ3GeometryObject        cone,
  257.     TQ3AttributeSet            *bottomAttributeSet);
  258.  
  259. QD3D_EXPORT TQ3Status Q3Cone_SetFaceAttributeSet(
  260.     TQ3GeometryObject        cone,
  261.     TQ3AttributeSet            faceAttributeSet);
  262.  
  263. QD3D_EXPORT TQ3Status Q3Cone_GetFaceAttributeSet(
  264.     TQ3GeometryObject        cone,
  265.     TQ3AttributeSet            *faceAttributeSet);
  266.  
  267. QD3D_EXPORT TQ3Status Q3Cone_EmptyData(
  268.     TQ3ConeData                *coneData);
  269.  
  270.  
  271. /******************************************************************************
  272.  **                                                                             **
  273.  **                        Cylinder Data Structure Definitions                     **
  274.  **                                                                             **
  275.  *****************************************************************************/
  276.  
  277. typedef struct TQ3CylinderData {
  278.     TQ3Point3D            origin;
  279.     TQ3Vector3D            orientation;
  280.     TQ3Vector3D            majorRadius;
  281.     TQ3Vector3D            minorRadius;
  282.     float                uMin, uMax,
  283.                         vMin, vMax;
  284.     TQ3EndCap             caps;
  285.     TQ3AttributeSet        interiorAttributeSet;
  286.     TQ3AttributeSet        topAttributeSet;
  287.     TQ3AttributeSet        faceAttributeSet;
  288.     TQ3AttributeSet        bottomAttributeSet;
  289.     TQ3AttributeSet        cylinderAttributeSet;
  290. } TQ3CylinderData;
  291.  
  292.  
  293. /******************************************************************************
  294.  **                                                                             **
  295.  **                            Cylinder Routines                                 **
  296.  **                                                                             **
  297.  *****************************************************************************/
  298.  
  299. QD3D_EXPORT TQ3GeometryObject Q3Cylinder_New(
  300.     const TQ3CylinderData    *cylinderData);
  301.  
  302. QD3D_EXPORT TQ3Status Q3Cylinder_Submit(
  303.     const TQ3CylinderData    *cylinderData,
  304.     TQ3ViewObject            view);
  305.     
  306. QD3D_EXPORT TQ3Status Q3Cylinder_SetData(
  307.     TQ3GeometryObject        cylinder, 
  308.     const TQ3CylinderData    *cylinderData);
  309.  
  310. QD3D_EXPORT TQ3Status Q3Cylinder_GetData(
  311.     TQ3GeometryObject        cylinder,
  312.     TQ3CylinderData            *cylinderData);
  313.  
  314. QD3D_EXPORT TQ3Status Q3Cylinder_SetOrigin(
  315.     TQ3GeometryObject        cylinder,
  316.     const TQ3Point3D        *origin);
  317.  
  318. QD3D_EXPORT TQ3Status Q3Cylinder_SetOrientation(
  319.     TQ3GeometryObject        cylinder,
  320.     const TQ3Vector3D        *orientation);
  321.  
  322. QD3D_EXPORT TQ3Status Q3Cylinder_SetMajorRadius(
  323.     TQ3GeometryObject        cylinder,
  324.     const TQ3Vector3D        *majorRadius);
  325.  
  326. QD3D_EXPORT TQ3Status Q3Cylinder_SetMinorRadius(
  327.     TQ3GeometryObject        cylinder,
  328.     const TQ3Vector3D        *minorRadius);
  329.  
  330. QD3D_EXPORT TQ3Status Q3Cylinder_GetOrigin(
  331.     TQ3GeometryObject        cylinder,
  332.     TQ3Point3D                *origin);
  333.  
  334. QD3D_EXPORT TQ3Status Q3Cylinder_GetOrientation(
  335.     TQ3GeometryObject        cylinder,
  336.     TQ3Vector3D                *orientation);
  337.  
  338. QD3D_EXPORT TQ3Status Q3Cylinder_GetMajorRadius(
  339.     TQ3GeometryObject        cylinder,
  340.     TQ3Vector3D                *majorRadius);
  341.  
  342. QD3D_EXPORT TQ3Status Q3Cylinder_GetMinorRadius(
  343.     TQ3GeometryObject        cylinder,
  344.     TQ3Vector3D                *minorRadius);
  345.  
  346. QD3D_EXPORT TQ3Status Q3Cylinder_SetParameterLimits(
  347.     TQ3GeometryObject        cylinder,
  348.     const float                uMin,
  349.     const float                uMax,
  350.     const float                vMin,
  351.     const float                vMax);
  352.                             
  353. QD3D_EXPORT TQ3Status Q3Cylinder_GetParameterLimits(
  354.     TQ3GeometryObject        cylinder,
  355.     float                    *uMin,
  356.     float                    *uMax,
  357.     float                    *vMin,
  358.     float                    *vMax);
  359.                             
  360. QD3D_EXPORT TQ3Status Q3Cylinder_SetCaps(
  361.     TQ3GeometryObject        cylinder,
  362.     TQ3EndCap                caps);
  363.  
  364. QD3D_EXPORT TQ3Status Q3Cylinder_GetCaps(
  365.     TQ3GeometryObject        cylinder,
  366.     TQ3EndCap                *caps);
  367.  
  368. QD3D_EXPORT TQ3Status Q3Cylinder_SetInteriorAttributeSet(
  369.     TQ3GeometryObject        cylinder,
  370.     TQ3AttributeSet            interiorAttributeSet);
  371.  
  372. QD3D_EXPORT TQ3Status Q3Cylinder_GetInteriorAttributeSet(
  373.     TQ3GeometryObject        cylinder,
  374.     TQ3AttributeSet            *interiorAttributeSet);
  375.  
  376. QD3D_EXPORT TQ3Status Q3Cylinder_SetTopAttributeSet(
  377.     TQ3GeometryObject        cylinder,
  378.     TQ3AttributeSet            topAttributeSet);
  379.  
  380. QD3D_EXPORT TQ3Status Q3Cylinder_GetTopAttributeSet(
  381.     TQ3GeometryObject        cylinder,
  382.     TQ3AttributeSet            *topAttributeSet);
  383.  
  384. QD3D_EXPORT TQ3Status Q3Cylinder_SetBottomAttributeSet(
  385.     TQ3GeometryObject        cylinder,
  386.     TQ3AttributeSet            bottomAttributeSet);
  387.  
  388. QD3D_EXPORT TQ3Status Q3Cylinder_GetBottomAttributeSet(
  389.     TQ3GeometryObject        cylinder,
  390.     TQ3AttributeSet            *bottomAttributeSet);
  391.  
  392. QD3D_EXPORT TQ3Status Q3Cylinder_SetFaceAttributeSet(
  393.     TQ3GeometryObject        cylinder,
  394.     TQ3AttributeSet            faceAttributeSet);
  395.  
  396. QD3D_EXPORT TQ3Status Q3Cylinder_GetFaceAttributeSet(
  397.     TQ3GeometryObject        cylinder,
  398.     TQ3AttributeSet            *faceAttributeSet);
  399.  
  400. QD3D_EXPORT TQ3Status Q3Cylinder_EmptyData(
  401.     TQ3CylinderData            *cylinderData);
  402.  
  403.  
  404. /******************************************************************************
  405.  **                                                                             **
  406.  **                        Disk Data Structure Definitions                         **
  407.  **                                                                             **
  408.  *****************************************************************************/
  409.  
  410. typedef struct TQ3DiskData {
  411.     TQ3Point3D            origin;
  412.     TQ3Vector3D            majorRadius;
  413.     TQ3Vector3D         minorRadius;
  414.     float                uMin, uMax,
  415.                         vMin, vMax;
  416.     TQ3AttributeSet        diskAttributeSet;
  417. } TQ3DiskData;
  418.  
  419.  
  420. /******************************************************************************
  421.  **                                                                             **
  422.  **                                Disk Routines                                  **
  423.  **                                                                             **
  424.  *****************************************************************************/
  425.  
  426. QD3D_EXPORT TQ3GeometryObject Q3Disk_New(
  427.     const TQ3DiskData        *diskData);
  428.  
  429. QD3D_EXPORT TQ3Status Q3Disk_Submit(
  430.     const TQ3DiskData        *diskData, 
  431.     TQ3ViewObject            view);
  432.     
  433. QD3D_EXPORT TQ3Status Q3Disk_SetData(
  434.     TQ3GeometryObject        disk, 
  435.     const TQ3DiskData        *diskData);
  436.  
  437. QD3D_EXPORT TQ3Status Q3Disk_GetData(
  438.     TQ3GeometryObject        disk, 
  439.     TQ3DiskData                *diskData);
  440.  
  441. QD3D_EXPORT TQ3Status Q3Disk_SetOrigin(
  442.     TQ3GeometryObject        disk,
  443.     const TQ3Point3D        *origin);
  444.  
  445. QD3D_EXPORT TQ3Status Q3Disk_SetMajorRadius(
  446.     TQ3GeometryObject        disk,
  447.     const TQ3Vector3D        *majorRadius);
  448.  
  449. QD3D_EXPORT TQ3Status Q3Disk_SetMinorRadius(
  450.     TQ3GeometryObject        disk,
  451.     const TQ3Vector3D        *minorRadius);
  452.  
  453. QD3D_EXPORT TQ3Status Q3Disk_GetOrigin(
  454.     TQ3GeometryObject        disk,
  455.     TQ3Point3D                *origin);
  456.  
  457. QD3D_EXPORT TQ3Status Q3Disk_GetMajorRadius(
  458.     TQ3GeometryObject        disk,
  459.     TQ3Vector3D                *majorRadius);
  460.  
  461. QD3D_EXPORT TQ3Status Q3Disk_GetMinorRadius(
  462.     TQ3GeometryObject        disk,
  463.     TQ3Vector3D                *minorRadius);
  464.         
  465. QD3D_EXPORT TQ3Status Q3Disk_SetParameterLimits(
  466.     TQ3GeometryObject        disk,
  467.     const float                uMin,
  468.     const float                uMax,
  469.     const float                vMin,
  470.     const float                vMax);
  471.                             
  472. QD3D_EXPORT TQ3Status Q3Disk_GetParameterLimits(
  473.     TQ3GeometryObject        disk,
  474.     float                    *uMin,
  475.     float                    *uMax,
  476.     float                    *vMin,
  477.     float                    *vMax);
  478.  
  479. QD3D_EXPORT TQ3Status Q3Disk_EmptyData(
  480.     TQ3DiskData                *diskData);
  481.  
  482.  
  483. /******************************************************************************
  484.  **                                                                             **
  485.  **                            Data Structure Definitions                         **
  486.  **                                                                             **
  487.  *****************************************************************************/
  488.  
  489. typedef struct TQ3EllipseData {
  490.     TQ3Point3D            origin;
  491.     TQ3Vector3D            majorRadius;
  492.     TQ3Vector3D            minorRadius;
  493.     float                uMin, uMax;
  494.     TQ3AttributeSet        ellipseAttributeSet;
  495. } TQ3EllipseData;
  496.  
  497.  
  498. /******************************************************************************
  499.  **                                                                             **
  500.  **                                Ellipse Routines                             **
  501.  **                                                                             **
  502.  *****************************************************************************/
  503.  
  504. QD3D_EXPORT TQ3GeometryObject Q3Ellipse_New(
  505.     const TQ3EllipseData    *ellipseData);
  506.  
  507. QD3D_EXPORT TQ3Status Q3Ellipse_Submit(
  508.     const TQ3EllipseData    *ellipseData,
  509.     TQ3ViewObject            view);
  510.     
  511. QD3D_EXPORT TQ3Status Q3Ellipse_SetData(
  512.     TQ3GeometryObject        ellipse, 
  513.     const TQ3EllipseData    *ellipseData);
  514.  
  515. QD3D_EXPORT TQ3Status Q3Ellipse_GetData(
  516.     TQ3GeometryObject        ellipse,
  517.     TQ3EllipseData            *ellipseData);
  518.  
  519. QD3D_EXPORT TQ3Status Q3Ellipse_SetOrigin(
  520.     TQ3GeometryObject        ellipse,
  521.     const TQ3Point3D        *origin);
  522.  
  523. QD3D_EXPORT TQ3Status Q3Ellipse_SetMajorRadius(
  524.     TQ3GeometryObject        ellipse,
  525.     const TQ3Vector3D        *majorRadius);
  526.  
  527. QD3D_EXPORT TQ3Status Q3Ellipse_SetMinorRadius(
  528.     TQ3GeometryObject        ellipse,
  529.     const TQ3Vector3D        *minorRadius);
  530.  
  531. QD3D_EXPORT TQ3Status Q3Ellipse_GetOrigin(
  532.     TQ3GeometryObject        ellipse,
  533.     TQ3Point3D                *origin);
  534.  
  535. QD3D_EXPORT TQ3Status Q3Ellipse_GetMajorRadius(
  536.     TQ3GeometryObject        ellipse,
  537.     TQ3Vector3D                *majorRadius);
  538.  
  539. QD3D_EXPORT TQ3Status Q3Ellipse_GetMinorRadius(
  540.     TQ3GeometryObject        ellipse,
  541.     TQ3Vector3D                *minorRadius);
  542.  
  543. QD3D_EXPORT TQ3Status Q3Ellipse_SetParameterLimits(
  544.     TQ3GeometryObject        ellipse,
  545.     const float                uMin,
  546.     const float                uMax);
  547.                             
  548. QD3D_EXPORT TQ3Status Q3Ellipse_GetParameterLimits(
  549.     TQ3GeometryObject        ellipse,
  550.     float                    *uMin,
  551.     float                    *uMax);
  552.  
  553. QD3D_EXPORT TQ3Status Q3Ellipse_EmptyData(
  554.     TQ3EllipseData            *ellipseData);
  555.  
  556.  
  557. /******************************************************************************
  558.  **                                                                          **
  559.  **                            Ellipsoid Data structures                         **
  560.  **                                                                          **
  561.  *****************************************************************************/
  562.  
  563. typedef struct TQ3EllipsoidData {
  564.     TQ3Point3D            origin;
  565.     TQ3Vector3D            orientation;
  566.     TQ3Vector3D            majorRadius;
  567.     TQ3Vector3D            minorRadius;
  568.     float                uMin, uMax,
  569.                         vMin, vMax;
  570.     TQ3EndCap            caps;
  571.     TQ3AttributeSet        interiorAttributeSet;
  572.     TQ3AttributeSet        ellipsoidAttributeSet;
  573. } TQ3EllipsoidData;
  574.  
  575.  
  576. /******************************************************************************
  577.  **                                                                          **
  578.  **                            Procedures                                        **
  579.  **                                                                          **
  580.  *****************************************************************************/
  581.  
  582. QD3D_EXPORT TQ3GeometryObject Q3Ellipsoid_New(
  583.     const TQ3EllipsoidData    *ellipsoidData);
  584.  
  585. QD3D_EXPORT TQ3Status Q3Ellipsoid_Submit(
  586.     const TQ3EllipsoidData    *ellipsoidData, 
  587.     TQ3ViewObject            view);
  588.     
  589. QD3D_EXPORT TQ3Status Q3Ellipsoid_SetData(
  590.     TQ3GeometryObject        ellipsoid, 
  591.     const TQ3EllipsoidData    *ellipsoidData);
  592.  
  593. QD3D_EXPORT TQ3Status Q3Ellipsoid_GetData(
  594.     TQ3GeometryObject        ellipsoid,
  595.     TQ3EllipsoidData        *ellipsoidData);
  596.  
  597. QD3D_EXPORT TQ3Status Q3Ellipsoid_SetOrigin(
  598.     TQ3GeometryObject        ellipsoid,
  599.     const TQ3Point3D        *origin);
  600.  
  601. QD3D_EXPORT TQ3Status Q3Ellipsoid_SetOrientation(
  602.     TQ3GeometryObject        ellipsoid,
  603.     const TQ3Vector3D        *orientation);
  604.  
  605. QD3D_EXPORT TQ3Status Q3Ellipsoid_SetMajorRadius(
  606.     TQ3GeometryObject        ellipsoid,
  607.     const TQ3Vector3D        *majorRadius);
  608.  
  609. QD3D_EXPORT TQ3Status Q3Ellipsoid_SetMinorRadius(
  610.     TQ3GeometryObject        ellipsoid,
  611.     const TQ3Vector3D        *minorRadius);
  612.  
  613. QD3D_EXPORT TQ3Status Q3Ellipsoid_GetOrigin(
  614.     TQ3GeometryObject        ellipsoid,
  615.     TQ3Point3D                *origin);
  616.  
  617. QD3D_EXPORT TQ3Status Q3Ellipsoid_GetOrientation(
  618.     TQ3GeometryObject        ellipsoid,
  619.     TQ3Vector3D                *orientation);
  620.  
  621. QD3D_EXPORT TQ3Status Q3Ellipsoid_GetMajorRadius(
  622.     TQ3GeometryObject        ellipsoid,
  623.     TQ3Vector3D                *majorRadius);
  624.  
  625. QD3D_EXPORT TQ3Status Q3Ellipsoid_GetMinorRadius(
  626.     TQ3GeometryObject        ellipsoid,
  627.     TQ3Vector3D                *minorRadius);
  628.  
  629. QD3D_EXPORT TQ3Status Q3Ellipsoid_SetParameterLimits(
  630.     TQ3GeometryObject        ellipsoid,
  631.     const float                uMin,
  632.     const float                uMax,
  633.     const float                vMin,
  634.     const float                vMax);
  635.                             
  636. QD3D_EXPORT TQ3Status Q3Ellipsoid_GetParameterLimits(
  637.     TQ3GeometryObject        ellipsoid,
  638.     float                    *uMin,
  639.     float                    *uMax,
  640.     float                    *vMin,
  641.     float                    *vMax);
  642.  
  643. QD3D_EXPORT TQ3Status Q3Ellipsoid_SetCaps(
  644.     TQ3GeometryObject        ellipsoid,
  645.     TQ3EndCap                caps);
  646.  
  647. QD3D_EXPORT TQ3Status Q3Ellipsoid_GetCaps(
  648.     TQ3GeometryObject        ellipsoid,
  649.     TQ3EndCap                *caps);
  650.  
  651. QD3D_EXPORT TQ3Status Q3Ellipsoid_SetInteriorAttributeSet(
  652.     TQ3GeometryObject        ellipsoid,
  653.     TQ3AttributeSet            interiorAttributeSet);
  654.  
  655. QD3D_EXPORT TQ3Status Q3Ellipsoid_GetInteriorAttributeSet(
  656.     TQ3GeometryObject        ellipsoid,
  657.     TQ3AttributeSet            *interiorAttributeSet);
  658.  
  659. QD3D_EXPORT TQ3Status Q3Ellipsoid_EmptyData(
  660.     TQ3EllipsoidData        *ellipsoidData);
  661.  
  662.  
  663. /******************************************************************************
  664.  **                                                                             **
  665.  **                    General Polygon Data Structure Definitions                 **
  666.  **                                                                             **
  667.  *****************************************************************************/
  668.  
  669. typedef enum TQ3GeneralPolygonShapeHint {
  670.     kQ3GeneralPolygonShapeHintComplex,
  671.     kQ3GeneralPolygonShapeHintConcave,
  672.     kQ3GeneralPolygonShapeHintConvex
  673. } TQ3GeneralPolygonShapeHint;
  674.  
  675. typedef struct TQ3GeneralPolygonContourData {
  676.     unsigned long                    numVertices;        
  677.     TQ3Vertex3D                        *vertices;            
  678. } TQ3GeneralPolygonContourData;
  679.  
  680. typedef struct TQ3GeneralPolygonData {
  681.     unsigned long                    numContours;
  682.     TQ3GeneralPolygonContourData    *contours;
  683.     TQ3GeneralPolygonShapeHint        shapeHint;
  684.     TQ3AttributeSet                    generalPolygonAttributeSet;
  685. } TQ3GeneralPolygonData;
  686.  
  687.  
  688. /******************************************************************************
  689.  **                                                                             **
  690.  **                            General polygon Routines                         **
  691.  **                                                                             **
  692.  *****************************************************************************/
  693.  
  694. QD3D_EXPORT TQ3GeometryObject Q3GeneralPolygon_New(
  695.     const TQ3GeneralPolygonData        *generalPolygonData);
  696.  
  697. QD3D_EXPORT TQ3Status Q3GeneralPolygon_Submit(
  698.      const TQ3GeneralPolygonData    *generalPolygonData,
  699.      TQ3ViewObject                    view);
  700.     
  701. QD3D_EXPORT TQ3Status Q3GeneralPolygon_SetData(
  702.     TQ3GeometryObject                generalPolygon, 
  703.     const TQ3GeneralPolygonData        *generalPolygonData);
  704.  
  705. QD3D_EXPORT TQ3Status Q3GeneralPolygon_GetData(
  706.     TQ3GeometryObject                polygon,
  707.     TQ3GeneralPolygonData            *generalPolygonData);
  708.  
  709. QD3D_EXPORT TQ3Status Q3GeneralPolygon_EmptyData(
  710.     TQ3GeneralPolygonData            *generalPolygonData);
  711.  
  712. QD3D_EXPORT TQ3Status Q3GeneralPolygon_GetVertexPosition(
  713.     TQ3GeometryObject                generalPolygon,
  714.     unsigned long                    contourIndex,
  715.     unsigned long                    pointIndex,
  716.     TQ3Point3D                        *position);
  717.  
  718. QD3D_EXPORT TQ3Status Q3GeneralPolygon_SetVertexPosition(
  719.     TQ3GeometryObject                generalPolygon,
  720.     unsigned long                    contourIndex,
  721.     unsigned long                    pointIndex,
  722.     const TQ3Point3D                *position);
  723.     
  724. QD3D_EXPORT TQ3Status Q3GeneralPolygon_GetVertexAttributeSet(
  725.     TQ3GeometryObject                generalPolygon,
  726.     unsigned long                    contourIndex,
  727.     unsigned long                    pointIndex,
  728.     TQ3AttributeSet                    *attributeSet);
  729.  
  730. QD3D_EXPORT TQ3Status Q3GeneralPolygon_SetVertexAttributeSet(
  731.     TQ3GeometryObject                generalPolygon,
  732.     unsigned long                    contourIndex,
  733.     unsigned long                    pointIndex,
  734.     TQ3AttributeSet                    attributeSet);
  735.  
  736. QD3D_EXPORT TQ3Status Q3GeneralPolygon_SetShapeHint(
  737.     TQ3GeometryObject                generalPolygon,
  738.     TQ3GeneralPolygonShapeHint        shapeHint);
  739.  
  740. QD3D_EXPORT TQ3Status Q3GeneralPolygon_GetShapeHint(
  741.     TQ3GeometryObject                generalPolygon,
  742.     TQ3GeneralPolygonShapeHint        *shapeHint);
  743.  
  744.  
  745. /******************************************************************************
  746.  **                                                                             **
  747.  **                        Line Data Structure Definitions                         **
  748.  **                                                                             **
  749.  *****************************************************************************/
  750.  
  751. typedef struct TQ3LineData {
  752.     TQ3Vertex3D            vertices[2];
  753.     TQ3AttributeSet        lineAttributeSet;
  754. } TQ3LineData;
  755.  
  756.  
  757. /******************************************************************************
  758.  **                                                                             **
  759.  **                            Line Routines                                     **
  760.  **                                                                             **
  761.  *****************************************************************************/
  762.  
  763. QD3D_EXPORT TQ3GeometryObject Q3Line_New(
  764.     const TQ3LineData         *lineData);
  765.  
  766. QD3D_EXPORT TQ3Status Q3Line_Submit(
  767.     const TQ3LineData         *lineData, 
  768.     TQ3ViewObject             view);
  769.  
  770. QD3D_EXPORT TQ3Status Q3Line_GetData(
  771.     TQ3GeometryObject         line,
  772.     TQ3LineData             *lineData);
  773.     
  774. QD3D_EXPORT TQ3Status Q3Line_SetData(
  775.     TQ3GeometryObject         line,
  776.     const TQ3LineData         *lineData);
  777.     
  778. QD3D_EXPORT TQ3Status Q3Line_GetVertexPosition(
  779.     TQ3GeometryObject        line,
  780.     unsigned long            index,
  781.     TQ3Point3D                *position);
  782.  
  783. QD3D_EXPORT TQ3Status Q3Line_SetVertexPosition(
  784.     TQ3GeometryObject        line,
  785.     unsigned long            index,
  786.     const TQ3Point3D        *position);
  787.  
  788. QD3D_EXPORT TQ3Status Q3Line_GetVertexAttributeSet(
  789.     TQ3GeometryObject        line,
  790.     unsigned long            index,
  791.     TQ3AttributeSet            *attributeSet);
  792.  
  793. QD3D_EXPORT TQ3Status Q3Line_SetVertexAttributeSet(
  794.     TQ3GeometryObject        line,
  795.     unsigned long            index,
  796.     TQ3AttributeSet            attributeSet);
  797.     
  798. QD3D_EXPORT TQ3Status Q3Line_EmptyData(
  799.     TQ3LineData             *lineData);
  800.  
  801.  
  802. /******************************************************************************
  803.  **                                                                             **
  804.  **                        Marker Data Structure Definitions                     **
  805.  **                                                                             **
  806.  *****************************************************************************/
  807.  
  808. typedef struct TQ3MarkerData {
  809.     TQ3Point3D            location;
  810.     long                xOffset;
  811.     long                yOffset;
  812.     TQ3Bitmap            bitmap;
  813.     TQ3AttributeSet        markerAttributeSet;
  814. } TQ3MarkerData;
  815.  
  816.  
  817. /******************************************************************************
  818.  **                                                                             **
  819.  **                                Marker Routines                                 **
  820.  **                                                                             **
  821.  *****************************************************************************/
  822.  
  823. QD3D_EXPORT TQ3GeometryObject Q3Marker_New(
  824.     const TQ3MarkerData        *markerData);
  825.  
  826. QD3D_EXPORT TQ3Status Q3Marker_Submit(
  827.     const TQ3MarkerData        *markerData,
  828.     TQ3ViewObject            view);
  829.     
  830. QD3D_EXPORT TQ3Status Q3Marker_SetData(
  831.     TQ3GeometryObject        geometry, 
  832.     const TQ3MarkerData        *markerData);
  833.  
  834. QD3D_EXPORT TQ3Status Q3Marker_GetData(
  835.     TQ3GeometryObject        geometry,
  836.     TQ3MarkerData            *markerData);
  837.  
  838. QD3D_EXPORT TQ3Status Q3Marker_EmptyData(
  839.     TQ3MarkerData            *markerData);
  840.     
  841. QD3D_EXPORT TQ3Status Q3Marker_GetPosition(
  842.     TQ3GeometryObject        marker,
  843.     TQ3Point3D                *location);
  844.  
  845. QD3D_EXPORT TQ3Status Q3Marker_SetPosition(
  846.     TQ3GeometryObject        marker,
  847.     const TQ3Point3D        *location);
  848.     
  849. QD3D_EXPORT TQ3Status Q3Marker_GetXOffset(
  850.     TQ3GeometryObject        marker,
  851.     long                    *xOffset);
  852.  
  853. QD3D_EXPORT TQ3Status Q3Marker_SetXOffset(
  854.     TQ3GeometryObject        marker,
  855.     long                    xOffset);
  856.  
  857. QD3D_EXPORT TQ3Status Q3Marker_GetYOffset(
  858.     TQ3GeometryObject        marker,
  859.     long                    *yOffset);
  860.  
  861. QD3D_EXPORT TQ3Status Q3Marker_SetYOffset(
  862.     TQ3GeometryObject        marker,
  863.     long                    yOffset);
  864.  
  865. QD3D_EXPORT TQ3Status Q3Marker_GetBitmap(
  866.     TQ3GeometryObject        marker,
  867.     TQ3Bitmap                *bitmap);
  868.  
  869. QD3D_EXPORT TQ3Status Q3Marker_SetBitmap(
  870.     TQ3GeometryObject        marker,
  871.     const TQ3Bitmap            *bitmap);
  872.  
  873.  
  874. /******************************************************************************
  875.  **                                                                             **
  876.  **                        Mesh Data Structure Definitions                         **
  877.  **                                                                             **
  878.  *****************************************************************************/
  879.  
  880. typedef struct TQ3MeshComponentPrivate     *TQ3MeshComponent;
  881. typedef struct TQ3MeshVertexPrivate     *TQ3MeshVertex;
  882. typedef struct TQ3MeshVertexPrivate     *TQ3MeshFace;
  883. typedef struct TQ3MeshEdgeRepPrivate     *TQ3MeshEdge;
  884. typedef struct TQ3MeshContourPrivate    *TQ3MeshContour;
  885.  
  886.  
  887. /******************************************************************************
  888.  **                                                                             **
  889.  **                            Mesh Routines                                      **
  890.  **                                                                             **
  891.  *****************************************************************************/
  892.  
  893. /*
  894.  *  Constructors
  895.  */
  896. QD3D_EXPORT TQ3GeometryObject Q3Mesh_New(
  897.     void);
  898.  
  899. QD3D_EXPORT TQ3MeshVertex Q3Mesh_VertexNew(
  900.     TQ3GeometryObject    mesh,
  901.     const TQ3Vertex3D    *vertex);
  902.             
  903. QD3D_EXPORT TQ3MeshFace Q3Mesh_FaceNew(
  904.     TQ3GeometryObject    mesh,
  905.     unsigned long        numVertices,
  906.     const TQ3MeshVertex    *vertices,
  907.     TQ3AttributeSet        attributeSet);
  908.  
  909. /*
  910.  *  Destructors
  911.  */
  912. QD3D_EXPORT TQ3Status Q3Mesh_VertexDelete( 
  913.     TQ3GeometryObject    mesh,
  914.     TQ3MeshVertex        vertex);
  915.  
  916. QD3D_EXPORT TQ3Status Q3Mesh_FaceDelete(
  917.     TQ3GeometryObject    mesh,
  918.     TQ3MeshFace            face);
  919.  
  920. /*
  921.  * Methods
  922.  */
  923. QD3D_EXPORT TQ3Status Q3Mesh_DelayUpdates(
  924.     TQ3GeometryObject    mesh);
  925.  
  926. QD3D_EXPORT TQ3Status Q3Mesh_ResumeUpdates(
  927.     TQ3GeometryObject    mesh);
  928.     
  929. QD3D_EXPORT TQ3MeshContour Q3Mesh_FaceToContour(
  930.     TQ3GeometryObject    mesh,
  931.     TQ3MeshFace            containerFace,
  932.     TQ3MeshFace            face);
  933.     
  934. QD3D_EXPORT TQ3MeshFace Q3Mesh_ContourToFace(
  935.     TQ3GeometryObject    mesh,
  936.     TQ3MeshContour        contour);
  937.  
  938. /*
  939.  * Mesh
  940.  */
  941. QD3D_EXPORT TQ3Status Q3Mesh_GetNumComponents(
  942.     TQ3GeometryObject    mesh,
  943.     unsigned long        *numComponents);
  944.  
  945. QD3D_EXPORT TQ3Status Q3Mesh_GetNumEdges(
  946.     TQ3GeometryObject    mesh,
  947.     unsigned long        *numEdges);
  948.  
  949. QD3D_EXPORT TQ3Status Q3Mesh_GetNumVertices(
  950.     TQ3GeometryObject    mesh,
  951.     unsigned long        *numVertices);
  952.  
  953. QD3D_EXPORT TQ3Status Q3Mesh_GetNumFaces(
  954.     TQ3GeometryObject    mesh,
  955.     unsigned long        *numFaces);
  956.  
  957. QD3D_EXPORT TQ3Status Q3Mesh_GetNumCorners(
  958.     TQ3GeometryObject    mesh,
  959.     unsigned long        *numCorners);
  960.  
  961. QD3D_EXPORT TQ3Status Q3Mesh_GetOrientable(
  962.     TQ3GeometryObject    mesh,
  963.     TQ3Boolean            *orientable);
  964.  
  965. /*
  966.  * Component
  967.  */
  968. QD3D_EXPORT TQ3Status Q3Mesh_GetComponentNumVertices(
  969.     TQ3GeometryObject    mesh,
  970.     TQ3MeshComponent    component,
  971.     unsigned long        *numVertices);
  972.  
  973. QD3D_EXPORT TQ3Status Q3Mesh_GetComponentNumEdges(
  974.     TQ3GeometryObject    mesh,
  975.     TQ3MeshComponent    component,
  976.     unsigned long        *numEdges);
  977.  
  978. QD3D_EXPORT TQ3Status Q3Mesh_GetComponentBoundingBox(
  979.     TQ3GeometryObject    mesh,
  980.     TQ3MeshComponent    component,
  981.     TQ3BoundingBox        *boundingBox);
  982.  
  983. QD3D_EXPORT TQ3Status Q3Mesh_GetComponentOrientable(
  984.     TQ3GeometryObject    mesh,
  985.     TQ3MeshComponent    component,
  986.     TQ3Boolean            *orientable);
  987.  
  988. /*
  989.  * Vertex
  990.  */
  991. QD3D_EXPORT TQ3Status Q3Mesh_GetVertexCoordinates(
  992.     TQ3GeometryObject    mesh,
  993.     TQ3MeshVertex        vertex,
  994.     TQ3Point3D            *coordinates);
  995.  
  996. QD3D_EXPORT TQ3Status Q3Mesh_GetVertexIndex(
  997.     TQ3GeometryObject    mesh,
  998.     TQ3MeshVertex        vertex,
  999.     unsigned long        *index);
  1000.  
  1001. QD3D_EXPORT TQ3Status Q3Mesh_GetVertexOnBoundary(
  1002.     TQ3GeometryObject    mesh,
  1003.     TQ3MeshVertex        vertex,
  1004.     TQ3Boolean            *onBoundary);
  1005.  
  1006. QD3D_EXPORT TQ3Status Q3Mesh_GetVertexComponent(
  1007.     TQ3GeometryObject    mesh,
  1008.     TQ3MeshVertex        vertex,
  1009.     TQ3MeshComponent    *component);
  1010.  
  1011. QD3D_EXPORT TQ3Status Q3Mesh_GetVertexAttributeSet(
  1012.     TQ3GeometryObject    mesh,
  1013.     TQ3MeshVertex        vertex,
  1014.     TQ3AttributeSet        *attributeSet);
  1015.  
  1016.  
  1017. QD3D_EXPORT TQ3Status Q3Mesh_SetVertexCoordinates(
  1018.     TQ3GeometryObject    mesh,
  1019.     TQ3MeshVertex        vertex,
  1020.     const TQ3Point3D    *coordinates);
  1021.  
  1022. QD3D_EXPORT TQ3Status Q3Mesh_SetVertexAttributeSet(
  1023.     TQ3GeometryObject    mesh,
  1024.     TQ3MeshVertex        vertex,
  1025.     TQ3AttributeSet        attributeSet);
  1026.  
  1027.  
  1028. /*
  1029.  * Face
  1030.  */
  1031. QD3D_EXPORT TQ3Status Q3Mesh_GetFaceNumVertices(
  1032.     TQ3GeometryObject    mesh,
  1033.     TQ3MeshFace            face,
  1034.     unsigned long        *numVertices);
  1035.  
  1036. QD3D_EXPORT TQ3Status Q3Mesh_GetFacePlaneEquation(
  1037.     TQ3GeometryObject    mesh,
  1038.     TQ3MeshFace            face,
  1039.     TQ3PlaneEquation    *planeEquation);
  1040.  
  1041. QD3D_EXPORT TQ3Status Q3Mesh_GetFaceNumContours(
  1042.     TQ3GeometryObject    mesh,
  1043.     TQ3MeshFace            face,
  1044.     unsigned long        *numContours);
  1045.  
  1046. QD3D_EXPORT TQ3Status Q3Mesh_GetFaceIndex(
  1047.     TQ3GeometryObject    mesh,
  1048.     TQ3MeshFace            face,
  1049.     unsigned long        *index);
  1050.  
  1051. QD3D_EXPORT TQ3Status Q3Mesh_GetFaceComponent(
  1052.     TQ3GeometryObject    mesh,
  1053.     TQ3MeshFace            face,
  1054.     TQ3MeshComponent    *component);
  1055.  
  1056. QD3D_EXPORT TQ3Status Q3Mesh_GetFaceAttributeSet(
  1057.     TQ3GeometryObject    mesh,
  1058.     TQ3MeshFace            face,
  1059.     TQ3AttributeSet        *attributeSet);
  1060.  
  1061.  
  1062. QD3D_EXPORT TQ3Status Q3Mesh_SetFaceAttributeSet(
  1063.     TQ3GeometryObject    mesh,
  1064.     TQ3MeshFace            face,
  1065.     TQ3AttributeSet        attributeSet);
  1066.  
  1067. /*
  1068.  * Edge
  1069.  */
  1070. QD3D_EXPORT TQ3Status Q3Mesh_GetEdgeVertices(
  1071.     TQ3GeometryObject    mesh,
  1072.     TQ3MeshEdge            edge,
  1073.     TQ3MeshVertex        *vertex1,
  1074.     TQ3MeshVertex        *vertex2);
  1075.  
  1076. QD3D_EXPORT TQ3Status Q3Mesh_GetEdgeFaces(
  1077.     TQ3GeometryObject    mesh,
  1078.     TQ3MeshEdge            edge,
  1079.     TQ3MeshFace            *face1,
  1080.     TQ3MeshFace            *face2);
  1081.  
  1082. QD3D_EXPORT TQ3Status Q3Mesh_GetEdgeOnBoundary(
  1083.     TQ3GeometryObject    mesh,
  1084.     TQ3MeshEdge            edge,
  1085.     TQ3Boolean            *onBoundary);
  1086.  
  1087. QD3D_EXPORT TQ3Status Q3Mesh_GetEdgeComponent(
  1088.     TQ3GeometryObject    mesh,
  1089.     TQ3MeshEdge            edge,
  1090.     TQ3MeshComponent    *component);
  1091.  
  1092. QD3D_EXPORT TQ3Status Q3Mesh_GetEdgeAttributeSet(
  1093.     TQ3GeometryObject    mesh,
  1094.     TQ3MeshEdge            edge,
  1095.     TQ3AttributeSet        *attributeSet);
  1096.     
  1097.  
  1098. QD3D_EXPORT TQ3Status Q3Mesh_SetEdgeAttributeSet(
  1099.     TQ3GeometryObject    mesh,
  1100.     TQ3MeshEdge            edge,
  1101.     TQ3AttributeSet        attributeSet);
  1102.     
  1103. /*
  1104.  * Contour
  1105.  */
  1106. QD3D_EXPORT TQ3Status Q3Mesh_GetContourFace(
  1107.     TQ3GeometryObject    mesh,
  1108.     TQ3MeshContour        contour,
  1109.     TQ3MeshFace            *face);
  1110.  
  1111. QD3D_EXPORT TQ3Status Q3Mesh_GetContourNumVertices(
  1112.     TQ3GeometryObject    mesh,
  1113.     TQ3MeshContour        contour,
  1114.     unsigned long        *numVertices);
  1115.  
  1116. /*
  1117.  * Corner
  1118.  */
  1119. QD3D_EXPORT TQ3Status Q3Mesh_GetCornerAttributeSet(
  1120.     TQ3GeometryObject    mesh,
  1121.     TQ3MeshVertex        vertex,
  1122.     TQ3MeshFace            face,
  1123.     TQ3AttributeSet        *attributeSet);
  1124.  
  1125. QD3D_EXPORT TQ3Status Q3Mesh_SetCornerAttributeSet(
  1126.     TQ3GeometryObject    mesh,
  1127.     TQ3MeshVertex        vertex,
  1128.     TQ3MeshFace            face,
  1129.     TQ3AttributeSet        attributeSet);
  1130.  
  1131.  
  1132. /*
  1133.  * Public Mesh Iterators
  1134.  */
  1135. typedef struct TQ3MeshIterator {
  1136.     void                *var1;
  1137.     void                *var2;
  1138.     void                *var3;
  1139.     struct {
  1140.         void            *field1;
  1141.         char            field2[4];
  1142.     } var4;
  1143. } TQ3MeshIterator;
  1144.  
  1145. QD3D_EXPORT TQ3MeshComponent Q3Mesh_FirstMeshComponent(
  1146.     TQ3GeometryObject    mesh,
  1147.     TQ3MeshIterator        *iterator);
  1148.     
  1149. QD3D_EXPORT TQ3MeshComponent Q3Mesh_NextMeshComponent(
  1150.     TQ3MeshIterator        *iterator);
  1151.  
  1152. QD3D_EXPORT TQ3MeshVertex Q3Mesh_FirstComponentVertex(
  1153.     TQ3MeshComponent    component,
  1154.     TQ3MeshIterator        *iterator);
  1155.     
  1156. QD3D_EXPORT TQ3MeshVertex Q3Mesh_NextComponentVertex(
  1157.     TQ3MeshIterator        *iterator);
  1158.  
  1159. QD3D_EXPORT TQ3MeshEdge Q3Mesh_FirstComponentEdge(
  1160.     TQ3MeshComponent    component,
  1161.     TQ3MeshIterator        *iterator);
  1162.     
  1163. QD3D_EXPORT TQ3MeshEdge Q3Mesh_NextComponentEdge(
  1164.     TQ3MeshIterator        *iterator);
  1165.  
  1166. QD3D_EXPORT TQ3MeshVertex Q3Mesh_FirstMeshVertex(
  1167.     TQ3GeometryObject    mesh,
  1168.     TQ3MeshIterator        *iterator);
  1169.  
  1170. QD3D_EXPORT TQ3MeshVertex Q3Mesh_NextMeshVertex(
  1171.     TQ3MeshIterator        *iterator);
  1172.  
  1173. QD3D_EXPORT TQ3MeshFace Q3Mesh_FirstMeshFace(
  1174.     TQ3GeometryObject    mesh,
  1175.     TQ3MeshIterator        *iterator);
  1176.  
  1177. QD3D_EXPORT TQ3MeshFace Q3Mesh_NextMeshFace(
  1178.     TQ3MeshIterator        *iterator);
  1179.  
  1180. QD3D_EXPORT TQ3MeshEdge Q3Mesh_FirstMeshEdge(
  1181.     TQ3GeometryObject    mesh,
  1182.     TQ3MeshIterator        *iterator);
  1183.  
  1184. QD3D_EXPORT TQ3MeshEdge Q3Mesh_NextMeshEdge(
  1185.     TQ3MeshIterator        *iterator);
  1186.  
  1187. QD3D_EXPORT TQ3MeshEdge Q3Mesh_FirstVertexEdge(
  1188.     TQ3MeshVertex        vertex,
  1189.     TQ3MeshIterator        *iterator);
  1190.     
  1191. QD3D_EXPORT TQ3MeshEdge Q3Mesh_NextVertexEdge(
  1192.     TQ3MeshIterator        *iterator);
  1193.  
  1194. QD3D_EXPORT TQ3MeshVertex Q3Mesh_FirstVertexVertex(
  1195.     TQ3MeshVertex        vertex,
  1196.     TQ3MeshIterator        *iterator);
  1197.     
  1198. QD3D_EXPORT TQ3MeshVertex Q3Mesh_NextVertexVertex(
  1199.     TQ3MeshIterator        *iterator);
  1200.  
  1201. QD3D_EXPORT TQ3MeshFace Q3Mesh_FirstVertexFace(
  1202.     TQ3MeshVertex        vertex,
  1203.     TQ3MeshIterator        *iterator);
  1204.     
  1205. QD3D_EXPORT TQ3MeshFace Q3Mesh_NextVertexFace(
  1206.     TQ3MeshIterator        *iterator);
  1207.  
  1208. QD3D_EXPORT TQ3MeshEdge Q3Mesh_FirstFaceEdge(
  1209.     TQ3MeshFace            face,
  1210.     TQ3MeshIterator        *iterator);
  1211.     
  1212. QD3D_EXPORT TQ3MeshEdge Q3Mesh_NextFaceEdge(
  1213.     TQ3MeshIterator        *iterator);
  1214.  
  1215. QD3D_EXPORT TQ3MeshVertex Q3Mesh_FirstFaceVertex(
  1216.     TQ3MeshFace            face,
  1217.     TQ3MeshIterator        *iterator);
  1218.     
  1219. QD3D_EXPORT TQ3MeshVertex Q3Mesh_NextFaceVertex(
  1220.     TQ3MeshIterator        *iterator);
  1221.  
  1222. QD3D_EXPORT TQ3MeshFace Q3Mesh_FirstFaceFace(
  1223.     TQ3MeshFace            face,
  1224.     TQ3MeshIterator        *iterator);
  1225.     
  1226. QD3D_EXPORT TQ3MeshFace Q3Mesh_NextFaceFace(
  1227.     TQ3MeshIterator        *iterator);
  1228.  
  1229. QD3D_EXPORT TQ3MeshContour Q3Mesh_FirstFaceContour(
  1230.     TQ3MeshFace            face,
  1231.     TQ3MeshIterator        *iterator);
  1232.  
  1233. QD3D_EXPORT TQ3MeshContour Q3Mesh_NextFaceContour(
  1234.     TQ3MeshIterator        *iterator);
  1235.  
  1236. QD3D_EXPORT TQ3MeshEdge Q3Mesh_FirstContourEdge(
  1237.     TQ3MeshContour        contour,
  1238.     TQ3MeshIterator        *iterator);
  1239.     
  1240. QD3D_EXPORT TQ3MeshEdge Q3Mesh_NextContourEdge(
  1241.     TQ3MeshIterator        *iterator);
  1242.  
  1243. QD3D_EXPORT TQ3MeshVertex Q3Mesh_FirstContourVertex(
  1244.     TQ3MeshContour        contour,
  1245.     TQ3MeshIterator        *iterator);
  1246.     
  1247. QD3D_EXPORT TQ3MeshVertex Q3Mesh_NextContourVertex(
  1248.     TQ3MeshIterator        *iterator);
  1249.  
  1250. QD3D_EXPORT TQ3MeshFace Q3Mesh_FirstContourFace(
  1251.     TQ3MeshContour        contour,
  1252.     TQ3MeshIterator        *iterator);
  1253.     
  1254. QD3D_EXPORT TQ3MeshFace Q3Mesh_NextContourFace(
  1255.     TQ3MeshIterator        *iterator);
  1256.  
  1257. #define    Q3ForEachMeshComponent(m,c,i)                                        \
  1258.     for ( (c) = Q3Mesh_FirstMeshComponent((m),(i));                            \
  1259.           (c);                                                                \
  1260.           (c) = Q3Mesh_NextMeshComponent((i)) )
  1261.  
  1262. #define Q3ForEachComponentVertex(c,v,i)                                        \
  1263.     for ( (v) = Q3Mesh_FirstComponentVertex((c),(i));                        \
  1264.           (v);                                                                \
  1265.           (v) = Q3Mesh_NextComponentVertex((i)) )
  1266.           
  1267. #define Q3ForEachComponentEdge(c,e,i)                                        \
  1268.     for ( (e) = Q3Mesh_FirstComponentEdge((c),(i));                            \
  1269.           (e);                                                                \
  1270.           (e) = Q3Mesh_NextComponentEdge((i)) )
  1271.  
  1272. #define Q3ForEachMeshVertex(m,v,i)                                            \
  1273.     for ( (v) = Q3Mesh_FirstMeshVertex((m),(i));                            \
  1274.           (v);                                                                \
  1275.           (v) = Q3Mesh_NextMeshVertex((i)) )
  1276.  
  1277. #define Q3ForEachMeshFace(m,f,i)                                            \
  1278.     for ( (f) = Q3Mesh_FirstMeshFace((m),(i));                                \
  1279.           (f);                                                                \
  1280.           (f) = Q3Mesh_NextMeshFace((i)) )
  1281.  
  1282. #define Q3ForEachMeshEdge(m,e,i)                                            \
  1283.     for ( (e) = Q3Mesh_FirstMeshEdge((m),(i));                                \
  1284.           (e);                                                                \
  1285.           (e) = Q3Mesh_NextMeshEdge((i)) )
  1286.  
  1287. #define Q3ForEachVertexEdge(v,e,i)                                            \
  1288.     for ( (e) = Q3Mesh_FirstVertexEdge((v),(i));                            \
  1289.           (e);                                                                \
  1290.           (e) = Q3Mesh_NextVertexEdge((i)) )
  1291.  
  1292. #define Q3ForEachVertexVertex(v,n,i)                                        \
  1293.     for ( (n) = Q3Mesh_FirstVertexVertex((v),(i));                            \
  1294.           (n);                                                                \
  1295.           (n) = Q3Mesh_NextVertexVertex((i)) )
  1296.  
  1297. #define Q3ForEachVertexFace(v,f,i)                                            \
  1298.     for ( (f) = Q3Mesh_FirstVertexFace((v),(i));                            \
  1299.           (f);                                                                \
  1300.           (f) = Q3Mesh_NextVertexFace((i)) )
  1301.  
  1302. #define Q3ForEachFaceEdge(f,e,i)                                            \
  1303.     for ( (e) = Q3Mesh_FirstFaceEdge((f),(i));                                \
  1304.           (e);                                                                \
  1305.           (e) = Q3Mesh_NextFaceEdge((i)) )
  1306.  
  1307. #define Q3ForEachFaceVertex(f,v,i)                                            \
  1308.     for ( (v) = Q3Mesh_FirstFaceVertex((f),(i));                            \
  1309.           (v);                                                                \
  1310.           (v) = Q3Mesh_NextFaceVertex((i)) )
  1311.     
  1312. #define Q3ForEachFaceFace(f,n,i)                                            \
  1313.     for ( (n) = Q3Mesh_FirstFaceFace((f),(i));                              \
  1314.           (n);                                                                \
  1315.           (n) = Q3Mesh_NextFaceFace((i)) )
  1316.           
  1317. #define Q3ForEachFaceContour(f,h,i)                                            \
  1318.     for ( (h) = Q3Mesh_FirstFaceContour((f),(i));                            \
  1319.           (h);                                                                \
  1320.           (h) = Q3Mesh_NextFaceContour((i)) )
  1321.  
  1322. #define Q3ForEachContourEdge(h,e,i)                                            \
  1323.     for ( (e) = Q3Mesh_FirstContourEdge((h),(i));                            \
  1324.           (e);                                                                \
  1325.           (e) = Q3Mesh_NextContourEdge((i)) )
  1326.  
  1327. #define Q3ForEachContourVertex(h,v,i)                                        \
  1328.     for ( (v) = Q3Mesh_FirstContourVertex((h),(i));                            \
  1329.           (v);                                                                \
  1330.           (v) = Q3Mesh_NextContourVertex((i)) )
  1331.  
  1332. #define Q3ForEachContourFace(h,f,i)                                            \
  1333.     for ( (f) = Q3Mesh_FirstContourFace((h),(i));                            \
  1334.           (f);                                                                \
  1335.           (f) = Q3Mesh_NextContourFace((i)) )
  1336.  
  1337.  
  1338. /******************************************************************************
  1339.  **                                                                             **
  1340.  **                            Maximum order for NURB Curves                     **
  1341.  **                                                                             **
  1342.  *****************************************************************************/
  1343.  
  1344. #define kQ3NURBCurveMaxOrder    16
  1345.  
  1346.  
  1347. /******************************************************************************
  1348.  **                                                                             **
  1349.  **                            Data Structure Definitions                         **
  1350.  **                                                                             **
  1351.  *****************************************************************************/
  1352.  
  1353. typedef struct TQ3NURBCurveData {
  1354.      unsigned long            order;
  1355.      unsigned long            numPoints;
  1356.      TQ3RationalPoint4D        *controlPoints;
  1357.      float                    *knots;
  1358.      TQ3AttributeSet            curveAttributeSet;
  1359. } TQ3NURBCurveData;
  1360.  
  1361.  
  1362. /******************************************************************************
  1363.  **                                                                             **
  1364.  **                                NURB Curve Routines                             **
  1365.  **                                                                             **
  1366.  *****************************************************************************/
  1367.  
  1368. QD3D_EXPORT TQ3GeometryObject Q3NURBCurve_New(
  1369.     const TQ3NURBCurveData        *curveData);
  1370.  
  1371. QD3D_EXPORT TQ3Status Q3NURBCurve_Submit(
  1372.     const TQ3NURBCurveData        *curveData,
  1373.     TQ3ViewObject                view);
  1374.  
  1375. QD3D_EXPORT TQ3Status Q3NURBCurve_SetData(
  1376.     TQ3GeometryObject            curve, 
  1377.     const TQ3NURBCurveData        *nurbCurveData);
  1378.  
  1379. QD3D_EXPORT TQ3Status Q3NURBCurve_GetData(
  1380.     TQ3GeometryObject            curve,
  1381.     TQ3NURBCurveData            *nurbCurveData); 
  1382.  
  1383. QD3D_EXPORT TQ3Status Q3NURBCurve_EmptyData(
  1384.     TQ3NURBCurveData            *nurbCurveData);
  1385.  
  1386. QD3D_EXPORT TQ3Status Q3NURBCurve_SetControlPoint(
  1387.     TQ3GeometryObject            curve,
  1388.     unsigned long                pointIndex,
  1389.     const TQ3RationalPoint4D    *point4D);
  1390.     
  1391. QD3D_EXPORT TQ3Status Q3NURBCurve_GetControlPoint(
  1392.     TQ3GeometryObject            curve,
  1393.     unsigned long                pointIndex,
  1394.     TQ3RationalPoint4D            *point4D);
  1395.  
  1396. QD3D_EXPORT TQ3Status Q3NURBCurve_SetKnot(
  1397.     TQ3GeometryObject            curve,
  1398.     unsigned long                knotIndex,
  1399.     float                        knotValue);
  1400.  
  1401. QD3D_EXPORT TQ3Status Q3NURBCurve_GetKnot(
  1402.     TQ3GeometryObject            curve,
  1403.     unsigned long                knotIndex,
  1404.     float                        *knotValue);
  1405.  
  1406.  
  1407. /******************************************************************************
  1408.  **                                                                             **
  1409.  **                            Maximum NURB Patch Order                         **
  1410.  **                                                                             **
  1411.  *****************************************************************************/
  1412.  
  1413. #define    kQ3NURBPatchMaxOrder    11
  1414.  
  1415. /******************************************************************************
  1416.  **                                                                             **
  1417.  **                        NURB Patch Data Structure Definitions                 **
  1418.  **                                                                             **
  1419.  *****************************************************************************/
  1420.  
  1421. typedef struct TQ3NURBPatchTrimCurveData {
  1422.      unsigned long                    order;
  1423.      unsigned long                    numPoints;
  1424.      TQ3RationalPoint3D                *controlPoints;    
  1425.     float                            *knots;    
  1426. } TQ3NURBPatchTrimCurveData;
  1427.  
  1428. typedef struct TQ3NURBPatchTrimLoopData {
  1429.     unsigned long                    numTrimCurves;
  1430.     TQ3NURBPatchTrimCurveData        *trimCurves;
  1431. } TQ3NURBPatchTrimLoopData;
  1432.  
  1433. typedef struct TQ3NURBPatchData {
  1434.     unsigned long                        uOrder;
  1435.     unsigned long                    vOrder;
  1436.     unsigned long                    numRows;
  1437.     unsigned long                        numColumns;                                  
  1438.     TQ3RationalPoint4D                *controlPoints;
  1439.     float                            *uKnots; 
  1440.     float                            *vKnots;
  1441.     unsigned long                    numTrimLoops;
  1442.     TQ3NURBPatchTrimLoopData        *trimLoops;
  1443.     TQ3AttributeSet                    patchAttributeSet;
  1444. } TQ3NURBPatchData;
  1445.  
  1446.  
  1447. /******************************************************************************
  1448.  **                                                                             **
  1449.  **                                NURB Patch Routines                             **
  1450.  **                                                                             **
  1451.  *****************************************************************************/
  1452.  
  1453. QD3D_EXPORT TQ3GeometryObject Q3NURBPatch_New(
  1454.     const TQ3NURBPatchData        *nurbPatchData);
  1455.  
  1456. QD3D_EXPORT TQ3Status Q3NURBPatch_Submit(
  1457.     const TQ3NURBPatchData        *nurbPatchData,
  1458.     TQ3ViewObject                view);
  1459.  
  1460. QD3D_EXPORT TQ3Status Q3NURBPatch_SetData(
  1461.     TQ3GeometryObject            nurbPatch, 
  1462.     const TQ3NURBPatchData        *nurbPatchData);
  1463.  
  1464. QD3D_EXPORT TQ3Status Q3NURBPatch_GetData(
  1465.     TQ3GeometryObject            nurbPatch, 
  1466.     TQ3NURBPatchData            *nurbPatchData);
  1467.  
  1468. QD3D_EXPORT TQ3Status Q3NURBPatch_SetControlPoint(
  1469.     TQ3GeometryObject            nurbPatch,
  1470.     unsigned long                rowIndex,
  1471.     unsigned long                columnIndex,
  1472.     const TQ3RationalPoint4D    *point4D);
  1473.  
  1474. QD3D_EXPORT TQ3Status Q3NURBPatch_GetControlPoint(
  1475.     TQ3GeometryObject            nurbPatch,
  1476.     unsigned long                rowIndex,
  1477.     unsigned long                columnIndex,
  1478.     TQ3RationalPoint4D            *point4D);
  1479.  
  1480. QD3D_EXPORT TQ3Status Q3NURBPatch_SetUKnot(
  1481.     TQ3GeometryObject            nurbPatch,
  1482.     unsigned long                knotIndex,
  1483.     float                        knotValue);
  1484.  
  1485. QD3D_EXPORT TQ3Status Q3NURBPatch_SetVKnot(
  1486.     TQ3GeometryObject            nurbPatch,
  1487.     unsigned long                knotIndex,
  1488.     float                        knotValue);
  1489.     
  1490. QD3D_EXPORT TQ3Status Q3NURBPatch_GetUKnot(
  1491.     TQ3GeometryObject            nurbPatch,
  1492.     unsigned long                knotIndex,
  1493.     float                        *knotValue);
  1494.  
  1495. QD3D_EXPORT TQ3Status Q3NURBPatch_GetVKnot(
  1496.     TQ3GeometryObject            nurbPatch,
  1497.     unsigned long                knotIndex,
  1498.     float                        *knotValue);
  1499.  
  1500. QD3D_EXPORT TQ3Status Q3NURBPatch_EmptyData(
  1501.     TQ3NURBPatchData            *nurbPatchData);
  1502.  
  1503.  
  1504. /******************************************************************************
  1505.  **                                                                             **
  1506.  **                        Pixmap Marker Data Structure Definitions             **
  1507.  **                                                                             **
  1508.  *****************************************************************************/
  1509.  
  1510. typedef struct TQ3PixmapMarkerData {
  1511.     TQ3Point3D            position;
  1512.     long                xOffset;
  1513.     long                yOffset;
  1514.     TQ3StoragePixmap    pixmap;
  1515.     TQ3AttributeSet        pixmapMarkerAttributeSet;
  1516. } TQ3PixmapMarkerData;
  1517.  
  1518.  
  1519. /******************************************************************************
  1520.  **                                                                             **
  1521.  **                                Pixmap Marker Routines                         **
  1522.  **                                                                             **
  1523.  *****************************************************************************/
  1524.  
  1525. QD3D_EXPORT TQ3GeometryObject Q3PixmapMarker_New(
  1526.     const TQ3PixmapMarkerData    *pixmapMarkerData);
  1527.  
  1528. QD3D_EXPORT TQ3Status Q3PixmapMarker_Submit(
  1529.     const TQ3PixmapMarkerData    *pixmapMarkerData,
  1530.     TQ3ViewObject                view);
  1531.     
  1532. QD3D_EXPORT TQ3Status Q3PixmapMarker_SetData(
  1533.     TQ3GeometryObject            geometry, 
  1534.     const TQ3PixmapMarkerData    *pixmapMarkerData);
  1535.  
  1536. QD3D_EXPORT TQ3Status Q3PixmapMarker_GetData(
  1537.     TQ3GeometryObject            geometry,
  1538.     TQ3PixmapMarkerData            *pixmapMarkerData);
  1539.  
  1540. QD3D_EXPORT TQ3Status Q3PixmapMarker_EmptyData(
  1541.     TQ3PixmapMarkerData            *pixmapMarkerData);
  1542.     
  1543. QD3D_EXPORT TQ3Status Q3PixmapMarker_GetPosition(
  1544.     TQ3GeometryObject            pixmapMarker,
  1545.     TQ3Point3D                    *position);
  1546.  
  1547. QD3D_EXPORT TQ3Status Q3PixmapMarker_SetPosition(
  1548.     TQ3GeometryObject            pixmapMarker,
  1549.     const TQ3Point3D            *position);
  1550.     
  1551. QD3D_EXPORT TQ3Status Q3PixmapMarker_GetXOffset(
  1552.     TQ3GeometryObject            pixmapMarker,
  1553.     long                        *xOffset);
  1554.  
  1555. QD3D_EXPORT TQ3Status Q3PixmapMarker_SetXOffset(
  1556.     TQ3GeometryObject            pixmapMarker,
  1557.     long                        xOffset);
  1558.  
  1559. QD3D_EXPORT TQ3Status Q3PixmapMarker_GetYOffset(
  1560.     TQ3GeometryObject            pixmapMarker,
  1561.     long                        *yOffset);
  1562.  
  1563. QD3D_EXPORT TQ3Status Q3PixmapMarker_SetYOffset(
  1564.     TQ3GeometryObject            pixmapMarker,
  1565.     long                        yOffset);
  1566.  
  1567. QD3D_EXPORT TQ3Status Q3PixmapMarker_GetPixmap(
  1568.     TQ3GeometryObject            pixmapMarker,
  1569.     TQ3StoragePixmap            *pixmap);
  1570.  
  1571. QD3D_EXPORT TQ3Status Q3PixmapMarker_SetPixmap(
  1572.     TQ3GeometryObject            pixmapMarker,
  1573.     const TQ3StoragePixmap        *pixmap);
  1574.  
  1575.  
  1576. /******************************************************************************
  1577.  **                                                                             **
  1578.  **                        Point Data Structure Definitions                     **
  1579.  **                                                                             **
  1580.  *****************************************************************************/
  1581.  
  1582. typedef struct TQ3PointData {
  1583.     TQ3Point3D            point;
  1584.     TQ3AttributeSet        pointAttributeSet;
  1585. } TQ3PointData;
  1586.  
  1587.  
  1588. /******************************************************************************
  1589.  **                                                                             **
  1590.  **                                Point Routines                                 **
  1591.  **                                                                             **
  1592.  *****************************************************************************/
  1593.     
  1594. QD3D_EXPORT TQ3GeometryObject Q3Point_New(
  1595.     const TQ3PointData         *pointData);
  1596.  
  1597. QD3D_EXPORT TQ3Status Q3Point_Submit(
  1598.     const TQ3PointData         *pointData,
  1599.     TQ3ViewObject             view);
  1600.     
  1601. QD3D_EXPORT TQ3Status Q3Point_GetData(
  1602.     TQ3GeometryObject         point,
  1603.     TQ3PointData            *pointData);
  1604.     
  1605. QD3D_EXPORT TQ3Status Q3Point_SetData(
  1606.     TQ3GeometryObject         point,
  1607.     const TQ3PointData         *pointData);
  1608.     
  1609. QD3D_EXPORT TQ3Status Q3Point_EmptyData(
  1610.     TQ3PointData             *pointData);    
  1611.     
  1612. QD3D_EXPORT TQ3Status Q3Point_SetPosition(
  1613.     TQ3GeometryObject        point,
  1614.     const TQ3Point3D        *position);
  1615.     
  1616. QD3D_EXPORT TQ3Status Q3Point_GetPosition(
  1617.     TQ3GeometryObject        point,
  1618.     TQ3Point3D                *position);
  1619.  
  1620.  
  1621. /******************************************************************************
  1622.  **                                                                             **
  1623.  **                        Polygon Data Structure Definitions                     **
  1624.  **                                                                             **
  1625.  *****************************************************************************/
  1626.  
  1627. typedef struct TQ3PolygonData {
  1628.     unsigned long        numVertices;        
  1629.     TQ3Vertex3D            *vertices;            
  1630.     TQ3AttributeSet        polygonAttributeSet;
  1631. } TQ3PolygonData;
  1632.  
  1633.  
  1634. /******************************************************************************
  1635.  **                                                                             **
  1636.  **                            Polygon Routines                                 **
  1637.  **                                                                             **
  1638.  *****************************************************************************/
  1639.  
  1640. QD3D_EXPORT TQ3GeometryObject Q3Polygon_New(
  1641.     const TQ3PolygonData    *polygonData);
  1642.  
  1643. QD3D_EXPORT TQ3Status Q3Polygon_Submit(
  1644.     const TQ3PolygonData    *polygonData,
  1645.     TQ3ViewObject            view);
  1646.     
  1647. QD3D_EXPORT TQ3Status Q3Polygon_SetData(
  1648.     TQ3GeometryObject        polygon, 
  1649.     const TQ3PolygonData    *polygonData);
  1650.  
  1651. QD3D_EXPORT TQ3Status Q3Polygon_GetData(
  1652.     TQ3GeometryObject        polygon,
  1653.     TQ3PolygonData            *polygonData);
  1654.  
  1655. QD3D_EXPORT TQ3Status Q3Polygon_EmptyData(
  1656.     TQ3PolygonData            *polygonData);
  1657.  
  1658. QD3D_EXPORT TQ3Status Q3Polygon_GetVertexPosition(
  1659.     TQ3GeometryObject        polygon,
  1660.     unsigned long            index,
  1661.     TQ3Point3D                *point);
  1662.  
  1663. QD3D_EXPORT TQ3Status Q3Polygon_SetVertexPosition(
  1664.     TQ3GeometryObject        polygon,
  1665.     unsigned long            index,
  1666.     const TQ3Point3D        *point);
  1667.  
  1668. QD3D_EXPORT TQ3Status Q3Polygon_GetVertexAttributeSet(
  1669.     TQ3GeometryObject        polygon,
  1670.     unsigned long            index,
  1671.     TQ3AttributeSet            *attributeSet);
  1672.  
  1673. QD3D_EXPORT TQ3Status Q3Polygon_SetVertexAttributeSet(
  1674.     TQ3GeometryObject        polygon,
  1675.     unsigned long            index,
  1676.     TQ3AttributeSet            attributeSet);
  1677.  
  1678.  
  1679. /******************************************************************************
  1680.  **                                                                             **
  1681.  **                        Polyhedron Data Structure Definitions                 **
  1682.  **                                                                             **
  1683.  *****************************************************************************/
  1684.  
  1685. typedef struct TQ3IndexedVertex3D {
  1686.     unsigned long        pointIndex;
  1687.     TQ3AttributeSet        attributeSet;
  1688. } TQ3IndexedVertex3D;
  1689.  
  1690. typedef enum TQ3PolyhedronEdgeMasks {
  1691.     kQ3PolyhedronEdgeNone    = 0,
  1692.     kQ3PolyhedronEdge01        = 1 << 0,
  1693.     kQ3PolyhedronEdge12        = 1 << 1,
  1694.     kQ3PolyhedronEdge20        = 1 << 2,
  1695.     kQ3PolyhedronEdgeAll    = kQ3PolyhedronEdge01     | 
  1696.                               kQ3PolyhedronEdge12    |
  1697.                               kQ3PolyhedronEdge20
  1698. } TQ3PolyhedronEdgeMasks;
  1699.  
  1700. typedef unsigned long TQ3PolyhedronEdge;
  1701.  
  1702. typedef struct TQ3PolyhedronEdgeData {
  1703.     unsigned long            pointIndices[2];
  1704.     unsigned long            triangleIndices[2];
  1705.     TQ3AttributeSet            edgeAttributeSet;
  1706. } TQ3PolyhedronEdgeData;
  1707.     
  1708. typedef struct TQ3PolyhedronTriangleData {
  1709.     TQ3IndexedVertex3D        vertices[3];
  1710.     TQ3PolyhedronEdge        edgeFlag;
  1711.     TQ3AttributeSet            triangleAttributeSet;
  1712. } TQ3PolyhedronTriangleData;
  1713.  
  1714. typedef struct TQ3PolyhedronData {
  1715.     unsigned long                numPoints;
  1716.     TQ3Point3D                    *points;
  1717.     unsigned long                numEdges;
  1718.     TQ3PolyhedronEdgeData        *edges;
  1719.     unsigned long                numTriangles;
  1720.     TQ3PolyhedronTriangleData    *triangles;
  1721.     TQ3AttributeSet                polyhedronAttributeSet;
  1722. } TQ3PolyhedronData;
  1723.  
  1724.  
  1725. /******************************************************************************
  1726.  **                                                                             **
  1727.  **                                Polyhedron Routines                             **
  1728.  **                                                                             **
  1729.  *****************************************************************************/
  1730.  
  1731. QD3D_EXPORT TQ3GeometryObject Q3Polyhedron_New(
  1732.     const TQ3PolyhedronData        *polyhedronData);
  1733.  
  1734. QD3D_EXPORT TQ3Status Q3Polyhedron_Submit(
  1735.     const TQ3PolyhedronData        *polyhedronData,
  1736.     TQ3ViewObject                view);
  1737.     
  1738. QD3D_EXPORT TQ3Status Q3Polyhedron_SetData(
  1739.     TQ3GeometryObject            polyhedron, 
  1740.     const TQ3PolyhedronData        *polyhedronData);
  1741.  
  1742. QD3D_EXPORT TQ3Status Q3Polyhedron_GetData(
  1743.     TQ3GeometryObject            polyhedron,
  1744.     TQ3PolyhedronData            *polyhedronData);
  1745.  
  1746. QD3D_EXPORT TQ3Status Q3Polyhedron_EmptyData(
  1747.     TQ3PolyhedronData            *polyhedronData);
  1748.     
  1749. QD3D_EXPORT TQ3Status Q3Polyhedron_SetPoint(
  1750.     TQ3GeometryObject            polyhedron,
  1751.     unsigned long                pointIndex,
  1752.     const TQ3Point3D            *point);
  1753.     
  1754. QD3D_EXPORT TQ3Status Q3Polyhedron_GetPoint(
  1755.     TQ3GeometryObject            polyhedron,
  1756.     unsigned long                pointIndex,
  1757.     TQ3Point3D                    *point);
  1758.  
  1759. QD3D_EXPORT TQ3Status Q3Polyhedron_GetVertex(
  1760.     TQ3GeometryObject            polyhedron,
  1761.     unsigned long                triangleIndex,
  1762.     unsigned long                vertexIndex,
  1763.     TQ3IndexedVertex3D            *vertex);
  1764.  
  1765. QD3D_EXPORT TQ3Status Q3Polyhedron_SetVertex(
  1766.     TQ3GeometryObject            polyhedron,
  1767.     unsigned long                triangleIndex,
  1768.     unsigned long                vertexIndex,
  1769.     const TQ3IndexedVertex3D    *vertex);
  1770.  
  1771. QD3D_EXPORT TQ3Status Q3Polyhedron_GetTriangleData(
  1772.     TQ3GeometryObject                polyhedron,
  1773.     unsigned long                    triangleIndex,
  1774.     TQ3PolyhedronTriangleData        *triangleData);
  1775.  
  1776. QD3D_EXPORT TQ3Status Q3Polyhedron_SetTriangleData(
  1777.     TQ3GeometryObject                polyhedron,
  1778.     unsigned long                    triangleIndex,
  1779.     const TQ3PolyhedronTriangleData    *triangleData);
  1780.  
  1781. QD3D_EXPORT TQ3Status Q3Polyhedron_GetEdgeData(
  1782.     TQ3GeometryObject            polyhedron,
  1783.     unsigned long                edgeIndex,
  1784.     TQ3PolyhedronEdgeData        *edgeData);
  1785.  
  1786. QD3D_EXPORT TQ3Status Q3Polyhedron_SetEdgeData(
  1787.     TQ3GeometryObject            polyhedron,
  1788.     unsigned long                edgeIndex,
  1789.     const TQ3PolyhedronEdgeData    *edgeData);
  1790.  
  1791.  
  1792. /******************************************************************************
  1793.  **                                                                             **
  1794.  **                        PolyLine Data Structure Definitions                     **
  1795.  **                                                                             **
  1796.  *****************************************************************************/
  1797.  
  1798. typedef struct TQ3PolyLineData {
  1799.     unsigned long       numVertices;            
  1800.     TQ3Vertex3D            *vertices;                
  1801.     TQ3AttributeSet        *segmentAttributeSet;        
  1802.     TQ3AttributeSet        polyLineAttributeSet;        
  1803. } TQ3PolyLineData;
  1804.     
  1805.  
  1806. /******************************************************************************
  1807.  **                                                                             **
  1808.  **                            PolyLine Routines                                 **
  1809.  **                                                                             **
  1810.  *****************************************************************************/
  1811.  
  1812. QD3D_EXPORT TQ3GeometryObject Q3PolyLine_New(
  1813.     const TQ3PolyLineData    *polylineData);
  1814.  
  1815. QD3D_EXPORT TQ3Status Q3PolyLine_Submit(
  1816.     const TQ3PolyLineData    *polyLineData,
  1817.     TQ3ViewObject            view);
  1818.     
  1819. QD3D_EXPORT TQ3Status Q3PolyLine_SetData(
  1820.     TQ3GeometryObject        polyLine, 
  1821.     const TQ3PolyLineData    *polyLineData);
  1822.  
  1823. QD3D_EXPORT TQ3Status Q3PolyLine_GetData(
  1824.     TQ3GeometryObject        polyLine,
  1825.     TQ3PolyLineData            *polyLineData);
  1826.  
  1827. QD3D_EXPORT TQ3Status Q3PolyLine_EmptyData(
  1828.     TQ3PolyLineData            *polyLineData);
  1829.         
  1830. QD3D_EXPORT TQ3Status Q3PolyLine_GetVertexPosition(
  1831.     TQ3GeometryObject        polyLine,
  1832.     unsigned long            index,
  1833.     TQ3Point3D                *position);
  1834.  
  1835. QD3D_EXPORT TQ3Status Q3PolyLine_SetVertexPosition(
  1836.     TQ3GeometryObject        polyLine,
  1837.     unsigned long            index,
  1838.     const TQ3Point3D        *position);
  1839.  
  1840. QD3D_EXPORT TQ3Status Q3PolyLine_GetVertexAttributeSet(
  1841.     TQ3GeometryObject        polyLine,
  1842.     unsigned long            index,
  1843.     TQ3AttributeSet            *attributeSet);
  1844.  
  1845. QD3D_EXPORT TQ3Status Q3PolyLine_SetVertexAttributeSet(
  1846.     TQ3GeometryObject        polyLine,
  1847.     unsigned long            index,
  1848.     TQ3AttributeSet            attributeSet);
  1849.  
  1850. QD3D_EXPORT TQ3Status Q3PolyLine_GetSegmentAttributeSet(
  1851.     TQ3GeometryObject        polyLine,
  1852.     unsigned long            index,
  1853.     TQ3AttributeSet            *attributeSet);
  1854.  
  1855. QD3D_EXPORT TQ3Status Q3PolyLine_SetSegmentAttributeSet(
  1856.     TQ3GeometryObject        polyLine,
  1857.     unsigned long            index,
  1858.     TQ3AttributeSet            attributeSet);
  1859.  
  1860.  
  1861. /******************************************************************************
  1862.  **                                                                             **
  1863.  **                        Torus Data Structure Definitions                     **
  1864.  **                                                                             **
  1865.  *****************************************************************************/
  1866.     
  1867. typedef struct TQ3TorusData {
  1868.     TQ3Point3D            origin;
  1869.     TQ3Vector3D            orientation;
  1870.     TQ3Vector3D            majorRadius;
  1871.     TQ3Vector3D            minorRadius;
  1872.     float                ratio;
  1873.     float                uMin, uMax,
  1874.                         vMin, vMax;
  1875.     TQ3EndCap            caps;
  1876.     TQ3AttributeSet        interiorAttributeSet;
  1877.     TQ3AttributeSet        torusAttributeSet;
  1878. } TQ3TorusData;
  1879.  
  1880.  
  1881. /******************************************************************************
  1882.  **                                                                             **
  1883.  **                                Torus Routines                                 **
  1884.  **                                                                             **
  1885.  *****************************************************************************/
  1886.  
  1887. QD3D_EXPORT TQ3GeometryObject Q3Torus_New(
  1888.     const TQ3TorusData        *torusData);
  1889.  
  1890. QD3D_EXPORT TQ3Status Q3Torus_Submit(
  1891.     const TQ3TorusData        *torusData, 
  1892.     TQ3ViewObject            view);
  1893.     
  1894. QD3D_EXPORT TQ3Status Q3Torus_SetData(
  1895.     TQ3GeometryObject        torus, 
  1896.     const TQ3TorusData        *torusData);
  1897.  
  1898. QD3D_EXPORT TQ3Status Q3Torus_GetData(
  1899.     TQ3GeometryObject        torus, 
  1900.     TQ3TorusData            *torusData);
  1901.  
  1902. QD3D_EXPORT TQ3Status Q3Torus_SetOrigin(
  1903.     TQ3GeometryObject        torus,
  1904.     const TQ3Point3D        *origin);
  1905.  
  1906. QD3D_EXPORT TQ3Status Q3Torus_SetOrientation(
  1907.     TQ3GeometryObject        torus,
  1908.     const TQ3Vector3D        *orientation);
  1909.  
  1910. QD3D_EXPORT TQ3Status Q3Torus_SetMajorRadius(
  1911.     TQ3GeometryObject        torus,
  1912.     const TQ3Vector3D        *majorRadius);
  1913.  
  1914. QD3D_EXPORT TQ3Status Q3Torus_SetMinorRadius(
  1915.     TQ3GeometryObject        torus,
  1916.     const TQ3Vector3D        *minorRadius);
  1917.  
  1918. QD3D_EXPORT TQ3Status Q3Torus_SetRatio(
  1919.     TQ3GeometryObject        torus,
  1920.     float                    ratio);
  1921.  
  1922. QD3D_EXPORT TQ3Status Q3Torus_GetOrigin(
  1923.     TQ3GeometryObject        torus,
  1924.     TQ3Point3D                *origin);
  1925.  
  1926. QD3D_EXPORT TQ3Status Q3Torus_GetOrientation(
  1927.     TQ3GeometryObject        torus,
  1928.     TQ3Vector3D                *orientation);
  1929.  
  1930. QD3D_EXPORT TQ3Status Q3Torus_GetMajorRadius(
  1931.     TQ3GeometryObject        torus,
  1932.     TQ3Vector3D                *majorRadius);
  1933.  
  1934. QD3D_EXPORT TQ3Status Q3Torus_GetMinorRadius(
  1935.     TQ3GeometryObject        torus,
  1936.     TQ3Vector3D                *minorRadius);
  1937.  
  1938. QD3D_EXPORT TQ3Status Q3Torus_GetRatio(
  1939.     TQ3GeometryObject        torus,
  1940.      float                    *ratio);
  1941.      
  1942. QD3D_EXPORT TQ3Status Q3Torus_SetParameterLimits(
  1943.     TQ3GeometryObject        torus,
  1944.     const float                uMin,
  1945.     const float                uMax,
  1946.     const float                vMin,
  1947.     const float                vMax);
  1948.                             
  1949. QD3D_EXPORT TQ3Status Q3Torus_GetParameterLimits(
  1950.     TQ3GeometryObject        torus,
  1951.     float                    *uMin,
  1952.     float                    *uMax,
  1953.     float                    *vMin,
  1954.     float                    *vMax);
  1955.                             
  1956. QD3D_EXPORT TQ3Status Q3Torus_SetCaps(
  1957.     TQ3GeometryObject        torus,
  1958.     TQ3EndCap                caps);
  1959.  
  1960. QD3D_EXPORT TQ3Status Q3Torus_GetCaps(
  1961.     TQ3GeometryObject        torus,
  1962.     TQ3EndCap                *caps);
  1963.  
  1964. QD3D_EXPORT TQ3Status Q3Torus_SetInteriorAttributeSet(
  1965.     TQ3GeometryObject        torus,
  1966.     TQ3AttributeSet            interiorAttributeSet);
  1967.  
  1968. QD3D_EXPORT TQ3Status Q3Torus_GetInteriorAttributeSet(
  1969.     TQ3GeometryObject        torus,
  1970.     TQ3AttributeSet            *interiorAttributeSet);
  1971.  
  1972. QD3D_EXPORT TQ3Status Q3Torus_EmptyData(
  1973.     TQ3TorusData            *torusData);
  1974.  
  1975.  
  1976. /******************************************************************************
  1977.  **                                                                             **
  1978.  **                        Triangle Data Structure Definitions                     **
  1979.  **                                                                             **
  1980.  *****************************************************************************/
  1981.  
  1982. typedef struct TQ3TriangleData {
  1983.     TQ3Vertex3D            vertices[3];
  1984.     TQ3AttributeSet        triangleAttributeSet;
  1985. } TQ3TriangleData;
  1986.  
  1987.  
  1988. /******************************************************************************
  1989.  **                                                                             **
  1990.  **                            Triangle Routines                                 **
  1991.  **                                                                             **
  1992.  *****************************************************************************/
  1993.  
  1994. QD3D_EXPORT TQ3GeometryObject Q3Triangle_New(
  1995.     const TQ3TriangleData    *triangleData);
  1996.  
  1997. QD3D_EXPORT TQ3Status Q3Triangle_Submit(
  1998.     const TQ3TriangleData    *triangleData,
  1999.     TQ3ViewObject            view);
  2000.     
  2001. QD3D_EXPORT TQ3Status Q3Triangle_SetData(
  2002.     TQ3GeometryObject        triangle, 
  2003.     const TQ3TriangleData    *triangleData);
  2004.  
  2005. QD3D_EXPORT TQ3Status Q3Triangle_GetData(
  2006.     TQ3GeometryObject        triangle,
  2007.     TQ3TriangleData            *triangleData);
  2008.  
  2009. QD3D_EXPORT TQ3Status Q3Triangle_EmptyData(
  2010.     TQ3TriangleData            *triangleData);
  2011.  
  2012. QD3D_EXPORT TQ3Status Q3Triangle_GetVertexPosition(
  2013.     TQ3GeometryObject        triangle,
  2014.     unsigned long            index,
  2015.     TQ3Point3D                *point);
  2016.  
  2017. QD3D_EXPORT TQ3Status Q3Triangle_SetVertexPosition(
  2018.     TQ3GeometryObject        triangle,
  2019.     unsigned long            index,
  2020.     const TQ3Point3D        *point);
  2021.  
  2022. QD3D_EXPORT TQ3Status Q3Triangle_GetVertexAttributeSet(
  2023.     TQ3GeometryObject        triangle,
  2024.     unsigned long            index,
  2025.     TQ3AttributeSet            *attributeSet);
  2026.  
  2027. QD3D_EXPORT TQ3Status Q3Triangle_SetVertexAttributeSet(
  2028.     TQ3GeometryObject        triangle,
  2029.     unsigned long             index,
  2030.     TQ3AttributeSet             attributeSet);
  2031.  
  2032.  
  2033. /******************************************************************************
  2034.  **                                                                             **
  2035.  **                        TriGrid Data Structure Definitions                     **
  2036.  **                                                                             **
  2037.  *****************************************************************************/
  2038.  
  2039. typedef struct TQ3TriGridData {
  2040.     unsigned long        numRows;            
  2041.     unsigned long        numColumns;
  2042.     TQ3Vertex3D            *vertices;            
  2043.     TQ3AttributeSet        *facetAttributeSet;
  2044.     TQ3AttributeSet        triGridAttributeSet;
  2045. } TQ3TriGridData;
  2046.  
  2047.  
  2048. /******************************************************************************
  2049.  **                                                                             **
  2050.  **                                TriGrid Routines                             **
  2051.  **                                                                             **
  2052.  *****************************************************************************/
  2053.  
  2054. QD3D_EXPORT TQ3GeometryObject Q3TriGrid_New(
  2055.     const TQ3TriGridData    *triGridData);
  2056.  
  2057. QD3D_EXPORT TQ3Status Q3TriGrid_Submit(
  2058.     const TQ3TriGridData    *triGridData,
  2059.     TQ3ViewObject            view);
  2060.     
  2061. QD3D_EXPORT TQ3Status Q3TriGrid_SetData(
  2062.     TQ3GeometryObject        triGrid, 
  2063.     const TQ3TriGridData    *triGridData);
  2064.  
  2065. QD3D_EXPORT TQ3Status Q3TriGrid_GetData(
  2066.     TQ3GeometryObject        triGrid,
  2067.     TQ3TriGridData            *triGridData);
  2068.  
  2069. QD3D_EXPORT TQ3Status Q3TriGrid_EmptyData(
  2070.     TQ3TriGridData            *triGridData);
  2071.  
  2072. QD3D_EXPORT TQ3Status Q3TriGrid_GetVertexPosition(
  2073.     TQ3GeometryObject        triGrid,
  2074.     unsigned long            rowIndex,
  2075.     unsigned long            columnIndex,
  2076.     TQ3Point3D                *position);
  2077.  
  2078. QD3D_EXPORT TQ3Status Q3TriGrid_SetVertexPosition(
  2079.     TQ3GeometryObject        triGrid,
  2080.     unsigned long            rowIndex,
  2081.     unsigned long            columnIndex,
  2082.     const TQ3Point3D        *position);
  2083.  
  2084. QD3D_EXPORT TQ3Status Q3TriGrid_GetVertexAttributeSet(
  2085.     TQ3GeometryObject        triGrid,
  2086.     unsigned long            rowIndex,
  2087.     unsigned long            columnIndex,
  2088.     TQ3AttributeSet            *attributeSet);
  2089.  
  2090. QD3D_EXPORT TQ3Status Q3TriGrid_SetVertexAttributeSet(
  2091.     TQ3GeometryObject        triGrid,
  2092.     unsigned long            rowIndex,
  2093.     unsigned long            columnIndex,
  2094.     TQ3AttributeSet            attributeSet);
  2095.  
  2096. QD3D_EXPORT TQ3Status Q3TriGrid_GetFacetAttributeSet(
  2097.     TQ3GeometryObject        triGrid,
  2098.     unsigned long            faceIndex,
  2099.     TQ3AttributeSet            *facetAttributeSet);
  2100.  
  2101. QD3D_EXPORT TQ3Status Q3TriGrid_SetFacetAttributeSet(
  2102.     TQ3GeometryObject        triGrid,
  2103.     unsigned long            faceIndex,
  2104.     TQ3AttributeSet            facetAttributeSet);
  2105.  
  2106.  
  2107. /******************************************************************************
  2108.  **                                                                             **
  2109.  **                        TriMesh Data Structure Definitions                     **
  2110.  **                                                                             **
  2111.  *****************************************************************************/
  2112.  
  2113. typedef struct TQ3TriMeshTriangleData {
  2114.     unsigned long        pointIndices[3];
  2115. } TQ3TriMeshTriangleData;
  2116.  
  2117. typedef struct TQ3TriMeshEdgeData {
  2118.     unsigned long        pointIndices[2];
  2119.     unsigned long        triangleIndices[2];
  2120. } TQ3TriMeshEdgeData;
  2121.  
  2122. typedef struct TQ3TriMeshAttributeData {
  2123.     TQ3AttributeType    attributeType;        /* The type of attribute          */
  2124.     void                *data;                /* Pointer to the contiguous     */
  2125.                                             /* attribute data.                 */
  2126.     char                *attributeUseArray; /* This is only used with custom */
  2127.                                             /* attributes                      */
  2128. } TQ3TriMeshAttributeData;
  2129.  
  2130. typedef struct TQ3TriMeshData {
  2131.     TQ3AttributeSet                triMeshAttributeSet;
  2132.     
  2133.     unsigned long                numTriangles;
  2134.     TQ3TriMeshTriangleData        *triangles;
  2135.     
  2136.     unsigned long                numTriangleAttributeTypes;
  2137.     TQ3TriMeshAttributeData        *triangleAttributeTypes;
  2138.     
  2139.     unsigned long                numEdges;
  2140.     TQ3TriMeshEdgeData            *edges;
  2141.     
  2142.     unsigned long                numEdgeAttributeTypes;
  2143.     TQ3TriMeshAttributeData        *edgeAttributeTypes;
  2144.     
  2145.     unsigned long                numPoints;
  2146.     TQ3Point3D                    *points;
  2147.     
  2148.     unsigned long                numVertexAttributeTypes;
  2149.     TQ3TriMeshAttributeData        *vertexAttributeTypes;
  2150.  
  2151.     TQ3BoundingBox                bBox;
  2152. } TQ3TriMeshData;
  2153.  
  2154.  
  2155. /******************************************************************************
  2156.  **                                                                             **
  2157.  **                            TriMesh Routines                                 **
  2158.  **                                                                             **
  2159.  *****************************************************************************/
  2160.  
  2161. QD3D_EXPORT TQ3GeometryObject Q3TriMesh_New(
  2162.     const TQ3TriMeshData    *triMeshData);
  2163.  
  2164. QD3D_EXPORT TQ3Status Q3TriMesh_Submit(
  2165.     const TQ3TriMeshData    *triMeshData,
  2166.     TQ3ViewObject            view);
  2167.     
  2168. QD3D_EXPORT TQ3Status Q3TriMesh_SetData(
  2169.     TQ3GeometryObject        triMesh, 
  2170.     const TQ3TriMeshData    *triMeshData);
  2171.  
  2172. QD3D_EXPORT TQ3Status Q3TriMesh_GetData(
  2173.     TQ3GeometryObject        triMesh,
  2174.     TQ3TriMeshData            *triMeshData);
  2175.  
  2176. QD3D_EXPORT TQ3Status Q3TriMesh_EmptyData(
  2177.     TQ3TriMeshData            *triMeshData);
  2178.     
  2179.  
  2180. #ifdef __cplusplus
  2181. }
  2182. #endif    /* __cplusplus */
  2183.  
  2184. #if defined(__MWERKS__)
  2185.     #pragma enumsalwaysint reset
  2186. #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  2187.     #pragma options enum=reset
  2188. #endif
  2189.  
  2190. #endif  /* QD3DGeometry_h  */
  2191.